1. Technical Field
The present disclosure relates to identifying concurrency levels of processing stages in a distributed system, and more particularly, to a system and method for identifying concurrency levels of processing stages in a distributed system, and using the identified concurrency levels to identify common resources and bottlenecks in the system, and allocate resources in the system.
2. Discussion of Related Art
A distributed system includes a plurality of job requests that traverse multiple processing stages prior to completion. A processing stage may correspond to, for example, a function or method call in the source code of a computer application. Each processing stage may be handled by one or more computers in the distributed system. The job requests may be processed in parallel at each processing stage based on the concurrency level of each respective stage. The concurrency level of a processing stage refers to the maximum number of job requests that the system can process at that stage at the same time. When the concurrency level at a processing stage is one, all jobs at that stage will be processed in sequential order. A stage having a limited concurrency level may act as a bottleneck that negatively impacts the performance of the system.
A limited concurrency level may be caused by a limited resource(s) in a system, or may be the result of the use of locks in a system. Locking, which is common in systems such as database systems, may be utilized to ensure the proper execution of job requests. Identifying operations in a system that result in limited concurrency levels, such as locking, may aid in improving the performance of a distributed system.